/**
 * @author 艾尼亚尔
 * @date 2025/5/19
 * @description
 */

import type {AxiosRequestConfig, AxiosResponse} from 'axios';
import type {Result,CreateAxiosOptions} from './type.ts';

export abstract class AxiosTransform {
    /**
     * @description: 请求之前处理配置
     */
    beforeRequestHook?: (config: AxiosRequestConfig, options: any) => AxiosRequestConfig;
    /**
     * @description: 请求之前的拦截器
     */
    requestInterceptors?: (config: AxiosRequestConfig, options: CreateAxiosOptions) => AxiosRequestConfig;
    /**
     * @description: 请求成功处理
     */
    transformResponseData?: (res: AxiosResponse<Result>, options: any) => any;
    /**
     * @description: 请求失败处理
     */
    requestCatch?: (e: Error) => Promise<any>;

    /**
     * @description: 请求之后的拦截器
     */
    responseInterceptors?: (res: AxiosResponse<any>) => AxiosResponse<any>;

    /**
     * @description: 请求之前的拦截器错误处理
     */
    requestInterceptorsCatch?: (error: Error) => void;

    /**
     * @description: 请求之后的拦截器错误处理
     */
    responseInterceptorsCatch?: (error: Error) => void;

}